package cn.e4j.core.shiro;

import cn.e4j.config.properties.E4jProperties;
import cn.e4j.config.properties.PropertieUtils;
import cn.e4j.core.util.LangUtils;
import cn.e4j.core.util.SpringContextHolder;
import cn.e4j.modular.common.entity.SysOrgT;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 自定义Authentication对象，使得Subject除了携带用户的登录名外还可以携带更多信息
 *
 * @author wenchuan.li
 * @date 2018/12/2 10:26:43
 */
@Getter
@Setter
public class ShiroUser implements Serializable {

    private static final long serialVersionUID = 1L;

    //public List<Integer> roleList; // 角色集
    //public List<String> roleNames; // 角色名称集
    //public List<String> permissions; // 菜单访问、操作类UI组件权限

    private String ID;

    /**
     * 创建人ID
     */
    private String CREATE_BY;
    /**
     * 是否已删除
     */
    private String IS_DEL;
    /**
     * 用户登录帐号
     */
    private String ACCOUNT;
    /**
     * 密码
     */
    private String PASSWORD;
    /**
     * 用户姓名
     */
    private String NAME;
    /**
     * 性别
     */
    private String SEX;
    /**
     * 用户状态
     */
    private String STATUS;
    /**
     * 用户类型
     */
    private String TYPE;
    /**
     * 所属组织流水号
     */
    private String ORG_ID;
    /**
     * 电子邮件
     */
    private String EMAIL;
    /**
     * 联系电话
     */
    private String MOBILE;
    /**
     * 身份证号
     */
    private String IDNO;
    /**
     * 用户界面皮肤
     */
    private String SKIN;
    /**
     * 业务对照码
     */
    private String BIZ_CODE;
    /**
     * 联系地址
     */
    private String ADDRESS;
    /**
     * 备注
     */
    private String REMARK;
    /**
     * 默认营运中心
     */
    private String ERP_DEPT;
    /**
     * 所属营运中心，多个以逗号分隔
     */
    private String DBC;

    /**
     * 语言别
     */
    private String LANG;
    private String PHOTO;
    private String DBC_DEF;

    /**
     * 默认营运据点
     */
    private String SITE;


    public String getLANG() {
        if ("T100".equals(PropertieUtils.getE4jProperties().getErpVersion())) {
            return LANG;
        } else {
            return LangUtils.getLang(LANG);
        }
    }

    public String getSITE() {
        if ("T100".equals(PropertieUtils.getE4jProperties().getErpVersion())) {
            return SITE == null ? "DSCNJ" : SITE;
        } else {
            return SITE == null ? "" : SITE;
        }
    }

    /**
     * 组织信息
     */
    private SysOrgT sysOrgT;

    /**
     * 拥有的组别
     */
    private List<String> DEVICE_ID;

    /**
     * 所属角色类型
     */
    private String ROLE_TYPE;

}
